<?php

require( '../api/ccproto_client.php' );

define('HOST', "api.de-captcher.com");
define('PORT', "3500");
define('USERNAME', "maurobraga");
define('PASSWORD', "Pi=3,14*10-6");


class Captcha_Model extends CI_Model {

    private $textoCaptcha;
    private $system_load;
    private $balance;
    private $major_id;
    private $minor_id;
    private $pict;
    private $pict_to;
    private $pict_type;
    private $resposta;
    private $fileName = "";
        
    public function getFileName(){
        return $this->fileName;
    }

    public function setFileName($fileName){
        $this->fileName  = $fileName;        
    }
        
    public function submeterCaptcha() {
        
        $ccp = new ccproto();
        $ccp->init();

        if ($ccp->login(HOST, PORT, USERNAME, PASSWORD) < 0) {
            print( " Falha no login!\n");
            return;
        }
        
        $this->system_load = 0;
    
        if ($ccp->system_load($this->system_load) != ccERR_OK) {
            print( "Erro ao carregar o sistema.\n");
            return;
        }
        
        $this->balance = 0;
    
        if ($ccp->balance($this->balance) != ccERR_OK) {
            print( "balance() FAILED\n");
            return;
        }
        
        $this->major_id = 0;
        $this->minor_id = 0;
    
        $this->pict = file_get_contents($this->fileName);
        $this->textoCaptcha = '';    
                
        $this->pict_to = ptoDEFAULT;
        $this->pict_type = ptUNSPECIFIED;

        $this->resposta = $ccp->picture2($this->pict, $this->pict_to, $this->pict_type, $this->textoCaptcha, $this->major_id, $this->minor_id);

        switch ($this->resposta) {

            case ccERR_OK:
                print($this->textoCaptcha); // Imprime apenas o texto da imagem
                break;
            
            case ccERR_BALANCE:
                print( "Não há fundos suficiente para processar a imagem! Por favor, faça uma recarga.");
                break;
            
            case ccERR_TIMEOUT:
                print( "Tempo limite esgotado.");
                break;
            
            case ccERR_OVERLOAD:
                print( "Servidor com problemas temporários. Tente novamente mais tarde.");
                break;

            // Erros locais
            case ccERR_STATUS:
                print( "local error.");
                print( "Os métodos ccproto_init() ou ccproto_login()não foram executados com sucesso antes do método ccproto_picture()");
                print( " need ccproto_init() and ccproto_login() to be called");
                break;

            // Erros de rede
            case ccERR_NET_ERROR:
                print( "network troubles, better to call ccproto_login() again");
                break;

            // Erros do servidor De-Captcher
            case ccERR_TEXT_SIZE:
                print( "O texto retornado é muito grande.");
                break;
            
            case ccERR_GENERAL:
                print( "Erro no servidor, faço o login novamente!");
                break;
            
            case ccERR_UNKNOWN:
                print( "Erro desconhecido, faça o login novamente!");
                break;

            default:    
            break;
        }

        $this->balance = 0;

        if ($ccp->balance($this->balance) != ccERR_OK) {
            print( "balance() FAILED\n");
            return;
        }

        $ccp->close();
        
        return $this->textoCaptcha;
        
    }

}
